package a09_贪心算法;

/**
 * <p>
 * a03_摆动序列复习1
 * </p>
 *
 * @author flyduck
 * @since 2025/1/8
 */
public class a03_摆动序列复习1 {
    public int wiggleMaxLength(int[] nums) {
        int result = 1;//处理最后一个

        int prevDiff = 0;//处理第一个，如果第一个为1，第二个为2，那么prevDiff = 0 && curDiff = 1
        int currentIdx = 0;
        while (currentIdx < nums.length - 1) {
            int curDiff = nums[currentIdx + 1] - nums[currentIdx];
            if((prevDiff <= 0 && curDiff > 0) || (prevDiff >= 0 && curDiff < 0)){
                result++;
                //如果单调递增 [1,1,2,2,3,3,4,4,5,5,6,6]
                //如下地方都会转折 prevDiff = 0 && curDiff = 1
                //               .   .   .   .   .
                //我们可以在第一次转折完，更新prevDiff = 1
                //               . prevDiff = 1
                //                 .正常这里完毕应该更新prevDiff=0，但我们在这里不更新，依旧prevDiff = 1
                //                   .那么到这里的时候prevDiff = 1 && curDiff = 1，不算转折了
                prevDiff = curDiff;
            }
            currentIdx++;
        }
        return result;
    }
}
